#ifndef DIESELGENERATOR_H
#define DIESELGENERATOR_H

#include "component.h"  // 包含基类头文件
#include <QVector>

// DieselGenerator 类继承自 Component 类
class DieselGenerator : public Component
{
private:
    double maxPower;        // 最大输出功率
    double minPower;        // 最小输出功率
    double fuelCost;        // 燃料成本系数（元/kWh）
    double currentEfficiency; // 当前效率
    QVector<double> emissionRates; // 排放率曲线

public:
    // 构造函数
    DieselGenerator(const QString& name,
                    double maxP = 1000.0,
                    double minP = 100.0,
                    double cost = 0.5);

    // 析构函数
    ~DieselGenerator();

    // 计算运行成本
    double calculateCost() const;

    // 设置燃料成本
    void setFuelCost(double cost);

    // 获取燃料成本
    double getFuelCost() const;

    // 设置功率范围
    void setPowerRange(double minP, double maxP);

    // 获取最大功率
    double getMaxPower() const;

    // 获取最小功率
    double getMinPower() const;

    // 重写基类的设置功率方法，添加功率范围检查
    void setPower(double newPower) override;

    // 重写基类的获取状态方法，添加柴油发电机特定信息
    QString getStatus() const override;

    // 柴油发电机特有方法：启动
    void start();

    // 柴油发电机特有方法：停止
    void stop();

    // 柴油发电机特有方法：设置排放率曲线
    void setEmissionRates(const QVector<double>& rates);
};

#endif // DIESELGENERATOR_H
